<?php
/**
 * \file
 * Bloc de formulaire pour le login.
 */

namespace pilar\AuthenticationManager /* \cond */ ; /* \endcond */
{

/**
 * Bloc de formulaire pour le login.
 *
 * \since 01/07/2009
 * \author Dirk MARSKI <dirk.marski@gmail.com>
 */
final class LoginForm extends \pilar\Forms\Form {


/**
 * Gestionnaire d'authentification pour gérer le login.
 * A donner séparément.
 */
private $_authenticationManager;


protected function load() {
 parent::load();

 // Ajout de la redirection après soumission :
  if (!isset($_SERVER['HTTP_REFERER']) ||
   PILAR_LOGIN_PAGE_URL == $_SERVER['HTTP_REFERER']) {
   $redirection = MAIN_URL.'/';
  } else if (isset($_SERVER['REQUEST_URI']) &&
   PILAR_LOGIN_PAGE_URL != $_SERVER['REQUEST_URI']) {
   $redirection = 'reload';
  } else {
  	$redirection = 'getBack';
  }
 
  $this->addRedirection(
   new \pilar\Redirections\Redirection(array(
    'name' => 'default',
    'redirection' => $redirection
   ))
  );
  $this->redirection('default')->setContainer($this);
 
 // Ajout du champs pour saisir le login :
  $login = new \pilar\SimpleFormMembers\TextBox(array(
   'name' => '_login',
   'label' => 'login'
  ));
  $this->appendAtom($login);

 // Ajout du champs pour saisir le mot de passe :
  $pw = new \pilar\SimpleFormMembers\TextBox(array(
   'name' => '_password',
   'label' => 'mot de passe'
  ));
  $this->appendAtom($pw);

 // Ajout de l'action en hidden :
  $action = new \pilar\SimpleFormMembers\TextBox(array(
   'name' => '_action',
   'hidden' => true
  ));
  $action->value = 'login';
  $this->appendAtom($action);

 if($this->get('independent')) {
  // Ajout du bouton de confirmation :
   $this->appendAtom(
    new \pilar\Forms\Button(array(
     'label' => 'login'
    ))
   );
 }
}


protected function actions() {
 parent::actions();

 if($this->postVarValue('_action_value') == 'login') {
  // Chargement des membres depuis le formulaire :
   if($this->loadFromGui() == 'valid') {
    $login = $this->postVarValue('_login_value');
    $pwd = $this->postVarValue('_password_value');

    $this->_authenticationManager->authenticateUser($login, $pwd);
    
    // Redirection de la page vers la page de laquelle on a fait appel au 
    // login : 
     if ($this->get('independent')) {
      $this->redirection('default')->redirect();
     }
   }
 }
}


public function setAuthenticationManager($authenticationManager) {
	$this->_authenticationManager = $authenticationManager;
}


} // Class.

} // Namespace.

?>
